﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AntikCompta.Data;

namespace AntikCompta
{
    public partial class NewCaisseWnd : Form
    {
        private Exercice mExercice;
        private CaisseElement mElement;
   
        public NewCaisseWnd(ref Exercice aExercice, int aReference)
        {
            InitializeComponent();
            mExercice = aExercice;

            SetValues(aReference);
        }

        private void SetValues(int aReference)
        {
            if (mExercice.Caisse.GetDepense(aReference, out mElement))
                rb_depense.Checked = true;
            else if ( mExercice.Caisse.GetRecette(aReference, out mElement) )
                rb_recette.Checked = true;

            if (mElement != null)
            {
                date.Value = mElement.Date;
                txt_somme.Text = mElement.Somme + "";
                txt_libelle.Text = mElement.Description;
            }
            else
                date.Value = date.MinDate;
        }

        private void bt_ok_Click(object sender, EventArgs e)
        {
            if (ValiderFrais() == false)
                return;

            try
            {
                float somme = txt_somme.FloatValue;
                if (mElement != null)
                    mExercice.Caisse.SupprimerElement(mElement.Reference);

                if (rb_depense.Checked == true)
                    mExercice.AjouterDepense(new CaisseElement(date.Value, txt_libelle.Text, somme));
                else
                    mExercice.AjouterRecette(new CaisseElement(date.Value, txt_libelle.Text, somme));

                DialogResult = DialogResult.OK;
                Close();
            }
            catch (Exception)
            {
                MessageBox.Show("La somme n'a pas un format valide");
            }
        }

        private bool ValiderFrais()
        {
            if (date.Value == date.MinDate)
            {
                MessageBox.Show("Tu n'as pas indiqué de date");
                return false;
            }
            else if (txt_libelle.Text.Length <= 0)
            {
                MessageBox.Show("Tu n'as pas donné de description");
                return false;
            }
            else if ((rb_depense.Checked == false) && (rb_recette.Checked == false))
            {
                MessageBox.Show("Tu n'as pas sélectionné le type d'élement de caisse, recette ou dépense");
                return false;
            }
            else if (txt_somme.Text.Length <= 0)
            {
                MessageBox.Show("Tu n'as pas donné de somme");
                return false;
            }

            return true;

        }

        private void bt_annuler_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
            Close();
        }

    }
}
